package br.unesp.demac.bcc.soo.sistemaclarus.dao;

import br.unesp.demac.bcc.soo.sistemaclarus.bean.Autor;
import br.unesp.demac.bcc.soo.sistemaclarus.util.FabricaConexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author Evaldo
 */
public class AutorDAOImp {

    /**
     * Salva o autor da obra
     * @param conn Conexão com o BD
     * @param autor Autor da Obra
     * @param idObra Id da Obra
     * @return Status da inserção
     */
    public boolean salvarAutor(Connection conn, Autor autor, int idObra) {
        final String queryAutor = "INSERT INTO autor(nomeAutor) "
                + "VALUES (?);";
        final String queryAutorHasObra = "INSERT INTO autor_has_obra(Obra_idObra, Autor_idAutor) "
                + "VALUES (?, ?);";
        boolean salvo = false;
        int idAutor = 0;

        PreparedStatement pstmt = null;
        ResultSet res = null;

        try {
            //inserindo Autor
            pstmt = conn.prepareStatement(queryAutor, PreparedStatement.RETURN_GENERATED_KEYS);
            pstmt.setString(1, autor.getNomeAutor());
            pstmt.executeUpdate();
            res = pstmt.getGeneratedKeys();
            if (res.next()) {
                idAutor = res.getInt(1);
            }

            //inserindo a relação Autor - Obra
            pstmt = conn.prepareStatement(queryAutorHasObra);
            pstmt.setInt(1, idObra);
            pstmt.setInt(2, idAutor);
            pstmt.execute();

            salvo = true;
        } catch (SQLException ex) {
            System.out.println("Erro ao inserir autor: " + ex.getMessage());
        } finally {
            FabricaConexao.fechar(pstmt);
        }

        return salvo;
    }
}
